#include<bits/stdc++.h>
using namespace std;
class Solution {
public:
    bool buddyStrings(string s, string goal) {
        map<char,int> mp1,mp2,mp3,mp4;
        int flag=0;
        if(s.size()!=goal.size()) return false;
        int count=0;
        for(int i=0;i<s.size();i++)
        {
            char a=s[i];
            char b=goal[i];
            if(a!=b)
            {
                mp1[a]++;
                mp2[b]++;
                count++;
            }
            if(a==b&&!flag)
            {
                mp3[a]++;
                mp4[b]++;
                if(mp3[a]>=2||mp4[a]>=2) flag=1;
            }
        }
        if(s==goal) return flag;
        if(count>2) return false;
        return mp1==mp2;
    }
};